package pe.edu.upc.dew.grupo3a.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

import pe.edu.upc.dew.grupo3a.model.Cliente;
import pe.edu.upc.dew.grupo3a.model.Funcion;
import pe.edu.upc.dew.grupo3a.model.Pelicula;
import pe.edu.upc.dew.grupo3a.model.Reserva;
import pe.edu.upc.dew.grupo3a.model.Sala;

public class ReservaDaoJdbc extends SimpleJdbcDaoSupport implements
ReservaDao {

	@Override
	public Reserva getReservaPorCodigo(String codigoreserva) {
		try {
			return getSimpleJdbcTemplate()
			.queryForObject(
					"select r.codigoreserva,r.codigofuncion,r.codigocliente,r.entradas,r.preciounitario,r.total," +
					"r.fechareserva,r.codigodeposito,r.banco,f.codigosala," +
					"f.codigopelicula,f.horainicio,f.horafinal,f.precio,f.subtitulada,f.butacasvendidas," +
					"c.apellidos,c.nombres ,c.edad,c.sexo,c.dni,c.email " +
					"from reserva r, funcion f, cliente c where r.codigoreserva=? and r.codigofuncion=f.codigofuncion " +
					"and r.codigocliente=c.codigocliente",
					new RowMapper<Reserva>(){
						public Reserva mapRow(ResultSet rs, int rowNum) throws SQLException {
							Reserva reserva = new Reserva();
							reserva.setCliente(new Cliente());
							reserva.setFuncion(new Funcion());
							reserva.setCodigo(rs.getString("codigoreserva"));
							reserva.setCodigoDeposito(rs.getString("codigodeposito"));
							return reserva;
						}
					},
					codigoreserva);
			
		} catch(DataAccessException ex ){
			//System.out.println(ex.getMessage());
			return null;
		}
	}

	@Override
	public List<Reserva> getReservasSinDeposito() {
		try {
			return getSimpleJdbcTemplate()
			.queryForObject(
					"select r.codigoreserva,r.codigofuncion,r.codigocliente,r.entradas,r.preciounitario,r.total," +
					"r.fechareserva,r.codigodeposito,r.banco,f.codigosala," +
					"f.codigopelicula,f.horainicio,f.horafinal,f.precio,f.subtitulada,f.butacasvendidas," +
					"c.apellidos,c.nombres ,c.edad,c.sexo,c.dni,c.email " +
					"from reserva r, funcion f, cliente c where r.codigodeposito=? and r.codigofuncion=f.codigofuncion " +
					"and r.codigocliente=c.codigocliente",
					new RowMapper<Reserva>(){
						public Reserva mapRow(ResultSet rs, int rowNum) throws SQLException {
							Reserva reserva = new Reserva();
							reserva.setCliente(new Cliente());
							reserva.setFuncion(new Funcion());
							reserva.setCodigo(rs.getString("codigoreserva"));
							reserva.setCodigoDeposito(rs.getString("codigodeposito"));
							return reserva;
						}
					});
			
		} catch(DataAccessException ex ){
			//System.out.println(ex.getMessage());
			return null;
		}
	}

	@Override
	public void actualizarReserva(Reserva reserva) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void eliminarReservaPorCodigo(String string) {
		// TODO Auto-generated method stub
		
	}

}
